package cn.com.fattiger.framework.cms.util;

import java.util.ArrayList;
import java.util.List;

import cn.com.fattiger.framework.cms.admin.common.model.Menu;

/**
 * 该类实现管理菜单层级关系的封装,目前支持两级
 *
 * @author kalen.li
 */
public class MenuUtil {

    /**
     * 组装左侧管理菜单 level=3
     *
     * @param menus 根据用户权限查询管理菜单列表
     * @return 封装过的层级菜单列表 3 level
     */
    public static List<Menu> packMenu(List<Menu> menus) {
        List<Menu> ms = new ArrayList<Menu>();
        for (Menu menu : menus) {
            if (menu.getPid() == -1) { // model level
                List<Menu> children = new ArrayList<Menu>();
                for (Menu _sub : menus) { // menu level
                    if (_sub.getPid() == menu.getId()) {

                        List<Menu> sub_children = new ArrayList<Menu>();
                        for (Menu _subsub : menus) { // function level
                            if (_subsub.getPid() == _sub.getId()) {
                                sub_children.add(_subsub);
                            }
                        }
                        _sub.setChildren(sub_children);
                        children.add(_sub);
                    }
                }
                menu.setChildren(children);
                ms.add(menu);
            }
        }
        return ms;
    }

}
